#include <iostream>
#include <cstdio>
#include <algorithm>
#include <utility>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <functional>
#include <iterator>
#include <random>
#include <chrono>
using std::cin;
using std::cout;

#define F(i, l, r) for (auto i = (l); i <= (r); ++i)
#define dF(i, l, r) for (auto i = (l); i >= (r); --i)
#define F2(i, l, r) for (auto i = (l); i < (r); ++i)

void Solve();
int main() {
#ifndef PKRBT
    [[maybe_unused]] auto tmp1_ = std::freopen("duel.in", "r", stdin);
    [[maybe_unused]] auto tmp2_ = std::freopen("duel.out", "w", stdout);
    std::ios::sync_with_stdio(false);
    cin.tie(nullptr);
#endif
    int tests = 1;
    // cin >> tests;
    F(t, 1, tests)
        Solve();
    return 0;
}

using LL = long long;

template<typename T>
using Vec = std::vector<T>;

std::mt19937_64 rng{(unsigned long long)std::chrono::steady_clock().now().time_since_epoch().count()};

const int MN = 500005;

int n, m, k, q;
int a[MN], b[MN], c[MN];
Vec<int> G[MN];

void Solve() {
    cin >> n;
    F(i, 1, n) {
        int x;
        cin >> x;
        ++b[x];
    }
    cout << *std::max_element(b + 1, b + (100000) + 1) << '\n';
}
